APP服务器(APP Server)是一个让用户接收从一个远端网络
存取服务器上的象征密, 其促使一个用户 码改变的工具。
历史发展
app server的前身是middleware(中间件),历史要长的多。早在上世纪六七十年代就已经开始在
IBM大型机系统上广泛应用了,叫做TP Monitor,比较著名的是BEA的
Tuxedo和IBM的CICS,运行在Terminal/Server模式的Server端,其功能主要是分离
商业逻辑,进行分布式计算的,可以自动管理
事务、资源和容错等等。因为发展的时间很长,所以技术非常成熟。middleware最早是用cobol编写的,如今还可以偶尔看到cobol的中间件的旧系统,再后来middleware改用C++来实现,著名中间件的有
IBM的CICS,BEA的Tuexdo,仍然广泛的应用在高端系统中,特别是银行系统。
然而在
面向对象的技术出现和广泛的应用之后,TP Monitor由于不是面向对象的,而是
面向过程的调用,因此TP Monitor管理的商业逻辑并没有
分布式对象系统中的商业组件那样的可扩展性、可重用性,表现出来很大的局限。
不过像
PHP这样主要还是面向过程调用的函数式的语言来说,TP Monitor仍然可以支持的非常完美,由于有了TP Monitor的支持,
PHP也可以应用在企业的环境中了。 eachnet用的是: 1 Linux+Apache+PHP+Tuxedo+Oracle eachnet在上海好几个ISP那里放了服务器,以保证服务不因某个ISP的问题而无法访问。
对象请求代理(Object Request Brokers)是另一种用的很多的中间件,支持
分布式对象的调用。然而它的问题是仅仅是一个代理(Broker),系统级的功能需要自己来实现,这包括管理并发性、
事务、资源管理和容错机制等等,而且不同的厂商提供的ORB之间也存在
互操作的兼容性问题。 于是一种综合了TP Monitor和ORB功能的新的
服务器出现了,叫做CTM(Component Transaction Monitor)组件事务
监控器。用在我们特定的
管理应用程序的环境中就是App Server。
在1997年开始,CTM市场发生了巨大的变化,因为这一年Sun的
J2EE标准正式发布,从此除了微软之外,所有的
CTM厂商都用
Java来改写自己的产品,例如
Sybase原来有一个叫做Jagus CTS的东西,如今已经变成了纯Java实现的EAServer,
Borland的公司app server也是这样来的。这样一来,除了微软之外,就剩下基于Java的app server了。
作用
App Server可以自动管理并发性、事务、对象分布、
负载均衡、安全性和资源管理等等系统级功能。简单的来说就是App Server是管理服务端组件的,它给服务端组件提供了一个全功能可靠的运行环境。
打个比方来说,
数据库系统是管理数据的,它也给数据提供了一个受监控和管理的运行环境,提供了
事务、安全性、负载均衡,并发性等等系统级功能,对于使用者来说,你不需要自己处理数据库表的并发锁定问题,自己处理SQL语句的解析、自己处理索引的优化等等系统级功能,同样对于
服务端组件的调用者来说也不需要自己处理并发请求、对象创建、销毁、缓存,控制组件事务等等系统级功能。
App Server对服务端组件的的关系就是
数据库系统对数据的关系。App Server完全是一个类似数据库系统这样一个非常复杂的服务端软件,所不同之处就是数据库系统(
RDBMS)是管理数据的,而App Server是管理对象的。 Microsoft是最早发布App Server的厂商,叫做Microsoft Transaction Server(MTS)。其他还有很多基于不同技术的App Server,不过随着
EJB规范的发布,主流的App Server基本上都是基于
J2EE的了。
当前,App Server市场主要就是实现J2EE规范的Java
应用服务器和Microsoft的.Net应用服务器这两大主流。 Tuxedo等基于过程传统的中间件会继续在特定的场合发挥巨大的作用,像那些需要极高的响应性能和基于特定平台C/C++的场合,还是具有不可替代的作用。
App Server提供的
服务端组件模型并没有解决所有的问题,基于不同技术实现的服务端组件之间不能互相调用和
数据共享,比如
EJB组件和
COM组件之间不能之间交换数据,所以基于
SOAP协议的Web Services试图解决这个问题,想把互联网上所有的不同技术实现的
组件服务都统一成单一的Web Services。这也是Web Services热门的原因之一,标准的统一对大家都有好处。